<?php
namespace wlcat\src;
class Route {
    public static function load() {
        // xxx.aa.com/Index/index/参数
        $defaultMode    = "";
        $controllerName = 'Index';
        $action         = 'index';
        $queryString    = array();
        $url            = $_SERVER['PATH_INFO'];
        $url            = trim($url, '/');
        if (!empty($url)) {
            $urlArray = explode('/', $url);
            // 获取控制器名
            $controllerName = ucfirst($urlArray[0]);
            // 获取动作名
            array_shift($urlArray);
            $action = empty($urlArray[0]) ? 'index' : $urlArray[0];
            //获取URL参数
            array_shift($urlArray);
            $queryString = empty($urlArray) ? array() : $urlArray;
        }
        $namespace = array('app');
        if (!empty($defaultMode))
        {
            $namespace[] = $defaultMode;
        }
        $namespace[] = "controllers";
        $namespace[] = $controllerName;

        // 实例化控制器
        $controller = implode('\\',$namespace) . 'Controller';
        try{
            $dispatch = new $controller($controllerName, $action);
            // 如果控制器存和动作存在，这调用并传入URL参数
            if ((int)method_exists($controller, $action)) {
                call_user_func_array(array($dispatch, $action), $queryString);
            } else {
                exit($controller . "控制器不存在方法:".$action);
            }
        } catch (\Exception $e)
        {
            echo '控制器不存在';
            exit($e->getMessage());
        }
    }
}